package com.pipa.producto.managed;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import com.pipa.catalogo.entity.TipoProducto;
import com.pipa.producto.entity.Producto;
import com.pipa.producto.service.ProductoService;
import com.pipa.producto.service.ProductoServiceImpl;

@ManagedBean(name="tmenu")
@SessionScoped
public class ProductoBean implements Serializable{
	private static final long serialVersionUID = 1L;
	String titleProducto ="";
	ProductoService servicio = new ProductoServiceImpl();
	List<Producto> productos = new ArrayList<Producto>();
	Producto producto = new Producto();
	TipoProducto tipoProducto = new TipoProducto();
	
	
	public String cargarProductos(){
		try {
			productos = servicio.getProductos();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return  "/paginas/mantenerProducto";
	}

	public String showGrabarProducto(String titulo) {
		setTitleProducto(titulo);
		if(titulo.contains("Modificar")){
			String mencve = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("mencve");
			 for (Producto pro : productos) {
				if(pro.getMencve().trim().equals(mencve)){
					producto = pro;
					tipoProducto = producto.getMentit();
					break;
				}
			}
		 }else{
			 producto = new Producto();
			 tipoProducto = new TipoProducto();		 
		 }
		
		return "/paginas/pproducto";
	}
	
	public String cancelar(){
		return "/paginas/mantenerProducto";
	}
	
	public String registrar(){
		String mensaje="";
		String resultado = "";
		if(producto.getMennom().equals("")){
			mensaje="-Campo nombre obligatorios.\n";
		}
		if(producto.getMencon().equals("")){
			mensaje+="-Campo contenido obligatorio.\n";
		}
		if(tipoProducto.getCodigo().equals("")){
			mensaje+="-Seleccione un tipo.\n";
		}
		if((producto.getMenpre()+"").equals("")){
			mensaje+="-Campo precio obligatorio.\n";
		}
		if(mensaje.equals("")){
			try {
				producto.setMentit(tipoProducto);
				if(titleProducto.contains("Modificar")){
					if(servicio.modificarProducto(producto)>0){
						System.out.println("modifico");
					}
				}else{
					String codigo = "0000"+productos.size();
					producto.setMencve("PO"+(codigo).substring(codigo.length()-4, codigo.length()));
					producto.setMensit("01");
					if(servicio.registrarProducto(producto)>0){
						System.out.println("registro");
					}
					
				}
				cargarProductos();
				resultado = "/paginas/mantenerProducto";
			} catch (SQLException e){
				e.printStackTrace();
			}

		}else{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error",  mensaje));
			resultado="/paginas/pproducto";
		}
		return resultado;
	}
	
	public List<Producto> getProductos() {
		return productos;
	}

	public void setProductos(List<Producto> productos) {
		this.productos = productos;
	}

	public Producto getProducto() {
		return producto;
	}

	public void setProducto(Producto producto) {
		this.producto = producto;
	}

	public TipoProducto getTipoProducto() {
		return tipoProducto;
	}

	public void setTipoProducto(TipoProducto tipoProducto) {
		this.tipoProducto = tipoProducto;
	}

	public String getTitleProducto() {
		return titleProducto;
	}

	public void setTitleProducto(String titleProducto) {
		this.titleProducto = titleProducto;
	}
	
	
}
